A RAID-5 disk array uses block-level striping (where a stripe is a concurrent series of blocks, one block for each disk in the array) with parity data distributed across all member disks. Data is also written to each physical disk one block at a time. However, whenever a “random” block (or some portion thereof) is updated and needs to be written to the physical disk, the parity block (or some portion thereof) must also be recalculated and rewritten. Consequently, each random block-level write requires at least two reads and two writes to complete.
While this is particularly costly for small write operations (i.e., operations involving a single block), larger sequential writes that span the entire width of the stripe (i.e., a “full-stripe write”), are much less costly because no read operations are required; instead, the new full-stripe write data (including the new calculated parity block) can simply be written over the entire stripe (as four concurrent write operations) without regard for the old data that is no longer needed for any purpose.